package com.xxx.notice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xxx.notice.domain.Article;
import com.xxx.notice.domain.Notice;
import com.xxx.notice.domain.NoticeFresh;

import java.util.Map;

/**
 * 通知业务类
 *
 * @author blijojo
 */
public interface NoticeService extends IService<Notice> {
    /**
     * 新增通知
     * @param notice 通知
     */
    void add(Notice notice);

    /**
     * 根据用户id查询该用户的待推送消息（新消息）
     * @param userId 用户id
     * @param page 当前页码
     * @param size 每页显示条数
     * @return 分页数据
     */
    Page<NoticeFresh> findNoticeFreshByUserIdWithPage(String userId, Integer page, Integer size);

    /**
     * 删除待推送消息（新消息）
     * @param noticeFresh 待推送消息
     */
    void deleteFresh(NoticeFresh noticeFresh);

    /**
     * 根据条件分页查询消息通知
     * @param notice 通知
     * @param page 当前页码
     * @param size 每页显示条数
     * @return 分页数据
     */
    Page<Notice> pageByCondition(Notice notice, Integer page, Integer size);

    /**
     * 根据id查询消息通知
     *
     * @param id 通知id
     * @return 通知
     */
    Notice findById(String id);

    /**
     * 根据条件查询通知
     *
     * @param map 查询条件
     * @return 通知
     */
    Notice findByCondition(Map<String, Object> map);

    /**
     * 新增系统全员通知
     *
     * @param article 通知文章
     */
    void addSysNotice(Article article);
}
